home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Software Contest 3 / FM Towns Software Contest 3.iso / exp / an / animefm2.bas < prev    next >
BASIC Source File  |  1994-01-07  |  16KB  |  393 lines

  1. 10 '
  2. 20 SCREEN@0:CLS:COLOR 7,0,7,4:CONSOLE 0,25,0:WIDTH 80,25:DEFINT A-C,E-Z
  3. 30 MOUSE 0
  4. 40 A=0:MA=0:B=0:C=0
  5. 50 DIM PX(31,15,7),PY(31,15,7),MP(15)
  6. 60 DIM ED(15,7),PC(15):FOR I=0 TO 15:PC(I)=7:NEXT I
  7. 70 GOSUB *OP1
  8. 80 MOUSE 4,0,0,639,479:CLS
  9. 90 MX=0:MY=0:ST=1:D$="A":SW=1:F$=""
  10. 100 'エディターメイン
  11. 110 GOSUB *LO
  12. 120 MOUSE 1,,,1:IF MOUSE(2,0) OR MOUSE(2,1) THEN 120
  13. 130 MX=MOUSE(0):MY=MOUSE(1):LOCATE 40,0:PRINT USING"POINT##/## PAT##/## PAGE##/## X### Y###";A;MA;B+1;MB+1;C+1;MC+1;MX;MY
  14. 140 IF MOUSE(2,0) THEN 170
  15. 150 IF MOUSE(2,1) THEN 1120
  16. 160 GOTO 130
  17. 170 MOUSE 1,,,0
  18. 180 IF MY<16 THEN 190 ELSE 270
  19. 190 X=MX\8:'770,500,630,870,980,2000,1500,2500
  20. 200 IF X<=8 THEN 750            'パターン確定
  21. 210 IF X=15 OR X=16 THEN 440    'パターン番号+
  22. 220 IF X=17 OR X=18 THEN 590    'パターン番号-
  23. 230 IF X=25 OR X=26 THEN 860    'ページ番号 +
  24. 240 IF X=27 OR X=28 THEN 990   'ページ番号 -
  25. 250 IF X<=37 AND X>=30 AND ST=1 THEN 2680'メニュー画面へ
  26. 260 GOTO 120
  27. 270 IF MY<20 THEN 120
  28. 280 IF MP(B)=0 AND C>0 THEN 120
  29. 290 IF MP(B) AND MA=A THEN 120
  30. 300 IF ED(B,C) THEN 120
  31. 310 IF A=31 THEN 120
  32. 320 ST=0
  33. 330 IF PY(A,B,C)>0 THEN 390
  34. 340 CIRCLE(MX,MY),4,5:PSET(MX,MY),5
  35. 350 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(A,B,C-1),PY(A,B,C-1))-(MX,MY),PSET,6,,&HA0A0
  36. 360 PX(A,B,C)=MX:PY(A,B,C)=MY
  37. 370 '
  38. 380 GOTO 120
  39. 390 LINE -(MX,MY),PSET,5
  40. 400 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(A+1,B,C-1),PY(A+1,B,C-1))-(MX,MY),PSET,6,,&HA0A0
  41. 410 IF MP(B)=0 AND MA<31 AND A=MA THEN MA=MA+1
  42. 420 A=A+1:PX(A,B,C)=MX:PY(A,B,C)=MY
  43. 430 GOTO 120
  44. 440 'パターン番号+1
  45. 450 IF B=MB THEN 120
  46. 460 IF ST=0 THEN 120
  47. 470 IF ED(B,C) THEN 480 ELSE 520
  48. 480 FOR I=0 TO MP(B):PX=PX(I,B,C):PY=PY(I,B,C)
  49. 490 IF I THEN LINE -(PX,PY),PSET,1 ELSE CIRCLE(PX,PY),4,1:PSET(PX,PY),1
  50. 500 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(I,B,C-1),PY(I,B,C-1))-(PX,PY),PSET,1,,&HA0A0
  51. 510 NEXT I
  52. 520 B=B+1:ST=1
  53. 530 IF ED(B,C) THEN A=MP(B):GOTO 540 ELSE A=0:GOTO 580
  54. 540 FOR I=0 TO MP(B):PX=PX(I,B,C):PY=PY(I,B,C)
  55. 550 IF I THEN LINE -(PX,PY),PSET,4 ELSE CIRCLE(PX,PY),4,4:PSET(PX,PY),4
  56. 560 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(I,B,C-1),PY(I,B,C-1))-(PX,PY),PSET,6,,&HA0A0
  57. 570 NEXT I
  58. 580 MA=MP(B):GOTO 120
  59. 590 'パターン番号-1
  60. 600 IF B=0 THEN 120
  61. 610 IF ST=0 THEN 120
  62. 620 '
  63. 630 IF ED(B,C) THEN 640 ELSE 680
  64. 640 FOR I=0 TO MP(B):PX=PX(I,B,C):PY=PY(I,B,C)
  65. 650 IF I THEN LINE -(PX,PY),PSET,1 ELSE CIRCLE(PX,PY),4,1:PSET(PX,PY),1
  66. 660 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(I,B,C-1),PY(I,B,C-1))-(PX,PY),PSET,1,,&HA0A0
  67. 670 NEXT I
  68. 680 B=B-1:ST=1
  69. 690 IF ED(B,C) THEN A=MP(B):GOTO 700 ELSE A=0:GOTO 740
  70. 700 FOR I=0 TO MP(B):PX=PX(I,B,C):PY=PY(I,B,C)
  71. 710 IF I THEN LINE -(PX,PY),PSET,4 ELSE CIRCLE(PX,PY),4,4:PSET(PX,PY),4
  72. 720 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(I,B,C-1),PY(I,B,C-1))-(PX,PY),PSET,6,,&HA0A0
  73. 730 NEXT I
  74. 740 MA=MP(B):GOTO 120
  75. 750 'パターン確定
  76. 760 IF ST THEN 120
  77. 770 IF A=0 THEN 120
  78. 780 IF MP(B) AND MA>A THEN 120
  79. 790 '
  80. 800 IF C=0 THEN MP(B)=MA
  81. 810 FOR I=0 TO MP(B):PX=PX(I,B,C):PY=PY(I,B,C)
  82. 820 IF I THEN LINE -(PX,PY),PSET,4 ELSE CIRCLE(PX,PY),4,4:PSET(PX,PY),4
  83. 830 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(I,B,C-1),PY(I,B,C-1))-(PX,PY),PSET,1,,&HA0A0
  84. 840 NEXT I:ST=1:ED(B,C)=1
  85. 850 GOTO 440
  86. 860 'ページ番号+1
  87. 870 IF ST=0 THEN 120
  88. 880 IF MC=C THEN 120
  89. 890 '
  90. 900 CLS:C=C+1
  91. 910 FOR I=0 TO MB
  92. 920 IF ED(I,C) THEN 930 ELSE 970
  93. 930 FOR J=0 TO MP(I):PX=PX(J,I,C):PY=PY(J,I,C)
  94. 940 IF J THEN LINE -(PX,PY),PSET,1-(I=0)*3 ELSE CIRCLE(PX,PY),4,1-(I=0)*3:PSET(PX,PY),1-(I=0)*3
  95. 950 IF C>0 AND (SW AND ED(I,C+(C>0))) THEN LINE (PX(J,I,C-1),PY(J,I,C-1))-(PX,PY),PSET,6+5*(I>0),,&HA0A0
  96. 960 NEXT J
  97. 970 NEXT I:ST=1:B=0:MA=MP(B):A=MA*ED(B,C)
  98. 980 GOTO 100
  99. 990 'ページ番号-1
  100. 1000 IF ST=0 THEN 120
  101. 1010 IF C=0 THEN 120
  102. 1020 '
  103. 1030 CLS:C=C-1
  104. 1040 FOR I=0 TO MB
  105. 1050 IF ED(I,C) THEN 1060 ELSE 1100
  106. 1060 FOR J=0 TO MP(I):PX=PX(J,I,C):PY=PY(J,I,C)
  107. 1070 IF J THEN LINE -(PX,PY),PSET,1-(I=0)*3 ELSE CIRCLE(PX,PY),4,1-(I=0)*3:PSET(PX,PY),1-(I=0)*3
  108. 1080 IF C>0 AND (SW AND ED(I,C+(C>0))) THEN LINE (PX(J,I,C-1),PY(J,I,C-1))-(PX,PY),PSET,6+5*(I>0),,&HA0A0
  109. 1090 NEXT J
  110. 1100 NEXT I:ST=1:B=0:MA=MP(B):A=MA*ED(B,C)
  111. 1110 GOTO 100
  112. 1120 '訂正(マウス右ボタン)
  113. 1130 IF A=0 THEN 120
  114. 1140 IF C=0 AND MP(B)=0 THEN 120
  115. 1150 IF A=0 AND ST=1 AND ED(B,C)=0 THEN 120
  116. 1160 MOUSE 1,,,0
  117. 1170 IF A=0 THEN A=MA
  118. 1180 CLS 5:GOSUB *LO
  119. 1190 FOR I=0 TO MB
  120. 1200 IF ED(I,C) THEN 1210 ELSE 1260
  121. 1210 FOR J=0 TO MP(I):PX=PX(J,I,C):PY=PY(J,I,C)
  122. 1220 IF MP(I)=0 THEN 1250
  123. 1230 IF I=B THEN 1250
  124. 1240 IF J THEN LINE -(PX,PY),PSET,1 ELSE CIRCLE(PX,PY),4,1:PSET(PX,PY),1
  125. 1250 NEXT J
  126. 1260 NEXT I
  127. 1270 IF A>0 THEN PX(A,B,C)=0:PY(A,B,C)=0:A=A-1
  128. 1280 IF A=0 THEN ST=-1*(C>0):ED(B,C)=0:PX(0,B,C)=0:PY(0,B,C)=0:GOTO 1330
  129. 1290 FOR I=0 TO A:PX=PX(I,B,C):PY=PY(I,B,C)
  130. 1300 IF I THEN LINE -(PX,PY),PSET,5 ELSE CIRCLE(PX,PY),4,5:PSET(PX,PY),5
  131. 1310 IF C>0 AND (SW AND ED(B,C+(C>0))) THEN LINE (PX(I,B,C-1),PY(I,B,C-1))-(PX,PY),PSET,6,,&HA0A0
  132. 1320 NEXT I:ST=0:ED(B,C)=0
  133. 1330 GOTO 120
  134. 1340 'データ保存
  135. 1350 CLS:PRINT"保存":LOCATE 0,1:PRINT"ドライブ:";D$:PRINT"Yes→RETURN Key/No→A~P Key/EXIT→ESC Key"
  136. 1360 I$=INPUT$(1)
  137. 1370 IF I$=CHR$(13) THEN 1410
  138. 1380 IF I$=>"A" AND I$<="Z" THEN D$=I$:GOTO 1410
  139. 1390 IF I$=>"a" AND I$<="z" THEN D$=CHR$(ASC(I$)-32):GOTO 1410
  140. 1400 IF I$=CHR$(27) THEN 2870 ELSE BEEP:GOTO 1360
  141. 1410 LOCATE 10,1:PRINT D$
  142. 1420 PRINT :FILES D$+":*.ANM":PRINT:Y=CSRLIN
  143. 1430 L=LEN(F$)
  144. 1440 LOCATE 0,Y:PRINT USING "保存ファイル名[&      &.ANM]";F$
  145. 1450 IF L<8 THEN LOCATE 16+L,Y:PRINT"<"
  146. 1460 '
  147. 1470 LOCATE L+65,Y:I$=INPUT$(1)
  148. 1480 IF I$=CHR$(8) AND L>0 THEN F$=LEFT$(F$,L-1):L=L-1:GOTO 1430
  149. 1490 IF I$=CHR$(13) AND L>0 THEN 1540
  150. 1500 IF I$>="0" AND I$<="Z" AND L<8 THEN F$=F$+I$:L=L+1:GOTO 1430
  151. 1510 IF I$>="a" AND I$<="z" AND L<8 THEN F$=F$+CHR$(ASC(I$)-32):L=L+1:GOTO 1430
  152. 1520 IF I$=CHR$(27) THEN 2870
  153. 1530 GOTO 1450
  154. 1540 ON ERROR GOTO 3620
  155. 1550 OPEN "O",#1,F$+".ANM":PRINT:PRINT"Now Saving..."
  156. 1560 PRINT#1,C;MC;B;MB;A;MA;ST
  157. 1570 FOR I=0 TO MC:FOR J=0 TO MB:FOR K=0 TO 31
  158. 1580 PRINT#1,PX(K,J,I);PY(K,J,I)
  159. 1590 NEXT K,J,I
  160. 1600 FOR I=0 TO 7:FOR J=0 TO 15:PRINT#1,ED(J,I):NEXT J,I
  161. 1610 FOR I=0 TO 15:PRINT#1,MP(I);PC(I):NEXT I:CLOSE #1:ON ERROR GOTO 0
  162. 1620 GOTO 2870
  163. 1630 'アニメーション実行
  164. 1640 F=0:LOCATE 0,1
  165. 1650 FOR I=0 TO MC:PRINT USING"PAGE ## チェック中";I+1
  166. 1660 FOR J=0 TO MB
  167. 1670 '
  168. 1680 IF ED(J,I)=0 THEN F=1:PRINT USING"                       PATTERN ## が設定されていません";J+1:BEEP
  169. 1690 NEXT J,I
  170. 1700 IF F=1 THEN BEEP ELSE 1740
  171. 1710 PRINT"なにかキーを押してください"
  172. 1720 IF INKEY$<>"" OR MOUSE(2,0) THEN 1720
  173. 1730 IF INKEY$<>"" OR MOUSE(2,0) THEN CLS:GOTO 2870 ELSE 1730
  174. 1740 GOSUB *OP2:MOUSE 1,,,0
  175. 1750 ON  GP GOTO 1900,2020
  176. 1760 'ノーマル
  177. 1770 FOR I=0 TO MC-1
  178. 1780 FOR N=0 TO PT:CLS
  179. 1790 FOR J=0 TO MB
  180. 1800 FOR K=0 TO MP(J)
  181. 1810 DX=(PX(K,J,I)-PX(K,J,I+1))/PT
  182. 1820 DY=(PY(K,J,I)-PY(K,J,I+1))/PT
  183. 1830 X=PX(K,J,I)-DX*N:Y=(PY(K,J,I)-DY*N)-8
  184. 1840 IF K THEN LINE -(X,Y),PSET,PC(J) ELSE PSET(X,Y),PC(J)
  185. 1850 NEXT K,J
  186. 1860 FOR M=0 TO WT*16:NEXT M
  187. 1870 NEXT N
  188. 1880 NEXT I:GOTO 2280
  189. 1890 'リバース
  190. 1900 FOR I=MC TO 1 STEP -1
  191. 1910 FOR N=0 TO PT:CLS
  192. 1920 FOR J=0 TO MB
  193. 1930 FOR K=0 TO MP(J)
  194. 1940 DX=(PX(K,J,I)-PX(K,J,I-1))/PT
  195. 1950 DY=(PY(K,J,I)-PY(K,J,I-1))/PT
  196. 1960 X=PX(K,J,I)-DX*N:Y=(PY(K,J,I)-DY*N)-8
  197. 1970 IF K THEN LINE -(X,Y),PSET,PC(J) ELSE PSET(X,Y),PC(J)
  198. 1980 NEXT K,J
  199. 1990 FOR M=0 TO WT*16:NEXT M
  200. 2000 NEXT N
  201. 2010 NEXT I:GOTO 2280
  202. 2020 'リターン(ノーマル+リバース)
  203. 2030 FOR I=0 TO MC-1
  204. 2040 FOR N=0 TO PT:CLS
  205. 2050 FOR J=0 TO MB
  206. 2060 FOR K=0 TO MP(J)
  207. 2070 DX=(PX(K,J,I)-PX(K,J,I+1))/PT
  208. 2080 DY=(PY(K,J,I)-PY(K,J,I+1))/PT
  209. 2090 X=PX(K,J,I)-DX*N:Y=(PY(K,J,I)-DY*N)-8
  210. 2100 IF K THEN LINE -(X,Y),PSET,PC(J) ELSE PSET(X,Y),PC(J)
  211. 2110 NEXT K,J
  212. 2120 FOR M=0 TO WT*16:NEXT M
  213. 2130 NEXT N
  214. 2140 NEXT I
  215. 2150 FOR I=MC TO 1 STEP -1
  216. 2160 FOR N=0 TO PT:CLS
  217. 2170 FOR J=0 TO MB
  218. 2180 FOR K=0 TO MP(J)
  219. 2190 DX=(PX(K,J,I)-PX(K,J,I-1))/PT
  220. 2200 DY=(PY(K,J,I)-PY(K,J,I-1))/PT
  221. 2210 X=PX(K,J,I)-DX*N:Y=(PY(K,J,I)-DY*N)-8
  222. 2220 IF K THEN LINE -(X,Y),PSET,PC(J) ELSE PSET(X,Y),PC(J)
  223. 2230 NEXT K,J
  224. 2240 FOR M=0 TO WT*16:NEXT M
  225. 2250 NEXT N
  226. 2260 NEXT I:GOTO 2280
  227. 2270 '
  228. 2280 LOCATE 30,20:PRINT"なにかキーを押してください":MOUSE 0
  229. 2290 IF INKEY$<>"" OR MOUSE(2,0) THEN CLS:GOSUB *SCREENPUT:GOTO 2870 ELSE 2290
  230. 2300 *SCREENPUT
  231. 2310 C=0:B=0:A=MP(B):MA=MP(B):ST=1:SCREEN@0:CLS
  232. 2320 FOR I=0 TO MB
  233. 2330 FOR J=0 TO MP(I):PX=PX(J,I,C):PY=PY(J,I,C)
  234. 2340 IF J THEN LINE -(PX,PY),PSET,1-(I=0)*3 ELSE CIRCLE(PX,PY),4,1-(I=0)*3:PSET(PX,PY),1-(I=0)*3
  235. 2350 NEXT J
  236. 2360 NEXT I
  237. 2370 RETURN
  238. 2380 'データ読み込み
  239. 2390 '
  240. 2400 CLS:PRINT "読み込み":LOCATE 0,1:PRINT"ドライブ:";D$:PRINT"変更無し→RETURN Key/変更する→A~P Key/戻る→ESC Key"
  241. 2410 I$=INPUT$(1)
  242. 2420 IF I$=CHR$(13) THEN 2460
  243. 2430 IF I$=>"A" AND I$<="Z" THEN D$=I$:GOTO 2460
  244. 2440 IF I$=>"a" AND I$<="z" THEN D$=CHR$(ASC(I$)-32):GOTO 2460
  245. 2450 IF I$=CHR$(27) THEN 2870 ELSE BEEP:GOTO 2410
  246. 2460 LOCATE 10,1:PRINT D$
  247. 2470 PRINT :FILES D$+":*.ANM":PRINT:Y=CSRLIN
  248. 2480 L=LEN(F$)
  249. 2490 LOCATE 0,Y:PRINT USING "読み込みファイル名[&      &.ANM]";F$
  250. 2500 IF L<8 THEN LOCATE 20+L,Y:PRINT"<"
  251. 2510 '
  252. 2520 I$=INPUT$(1)
  253. 2530 IF I$=CHR$(8) AND L>0 THEN F$=LEFT$(F$,L-1):L=L-1:GOTO 2480
  254. 2540 IF I$=CHR$(13) AND L>0 THEN 2590
  255. 2550 IF I$>="a" AND I$<="z" AND L<8 THEN F$=F$+CHR$(ASC(I$)-32):L=L+1:GOTO 2480
  256. 2560 IF I$>="0" AND I$<="Z" AND L<8 THEN F$=F$+I$:L=L+1:GOTO 2480
  257. 2570 IF I$=CHR$(27) THEN 2670
  258. 2580 GOTO 2500
  259. 2590 ON ERROR GOTO 3800:OPEN "I",#1,F$+".ANM"
  260. 2600 PRINT:PRINT"Now Loading..."
  261. 2610 INPUT#1,C,MC,B,MB,A,MA,ST
  262. 2620 FOR I=0 TO MC:FOR J=0 TO MB:FOR K=0 TO 31
  263. 2630 INPUT#1,PX(K,J,I),PY(K,J,I)
  264. 2640 NEXT K,J,I
  265. 2650 FOR I=0 TO 7:FOR J=0 TO 15:INPUT#1,ED(J,I):NEXT J,I
  266. 2660 FOR I=0 TO 15:INPUT#1,MP(I),PC(I):NEXT I:CLOSE #1:ON ERROR GOTO 0
  267. 2670 CLS:GOSUB *SCREENPUT:GOTO 2870
  268. 2680 'メニュー
  269. 2690 P1$="エディットアニメ実行データ保存データ読込初期化"
  270. 2700 LINE(0,0)-(639,19),PSET,0,BF:LOCATE 0,0:PRINT SPC(80):MOUSE 1,32,8,1
  271. 2710 FOR I=0 TO 4:COLOR ,%VAL(MID$("45662",I+1,1))
  272. 2720 SYMBOL(I*88,0),MID$(P1$,I*10+1,10),1,1,VAL(MID$("45662",I+1,1)),,,23
  273. 2730 NEXT I:COLOR 7,0
  274. 2740 MOUSE 4,0,0,416,32
  275. 2750 IF MOUSE(2,0) THEN 2750
  276. 2760 MX=MOUSE(0)\8:MY=MOUSE(1)\16
  277. 2770 IF MY>0 THEN 2760
  278. 2780 IF MOUSE(2,0) THEN 2800
  279. 2790 IF MOUSE(2,1) THEN 2870 ELSE 2760
  280. 2800 '
  281. 2810 IF MX<=9 THEN 2870                             'エディットへ
  282. 2820 IF MX>=11 AND MX<=20 THEN MOUSE 1,,,0:GOTO 1630'アニメ実行
  283. 2830 IF MX>=22 AND MX<=31 THEN MOUSE 1,,,0:GOTO 1340'データ保存
  284. 2840 IF MX>=33 AND MX<=42 THEN MOUSE 1,,,0:GOTO 2380'データ読み込み
  285. 2850 IF MX>=44 AND MX<=49 THEN 2910
  286. 2860 GOTO 2750
  287. 2870 'エディットへ
  288. 2880 CLS 1
  289. 2890 MOUSE 4,0,0,639,479
  290. 2900 GOTO 100
  291. 2910 '初期化
  292. 2920 LOCATE 55,0:PRINT"Are you sure ? (Y/N)";
  293. 2930 IF MOUSE(2,0) THEN 2930
  294. 2940 I$=INKEY$
  295. 2950 IF INKEY$="Y" OR INKEY$="y" OR MOUSE(2,0) THEN ERASE PX,PY,MP,ED,PC:GOTO 10
  296. 2960 IF INKEY$="N" OR INKEY$="n" OR MOUSE(2,1) THEN 2870 ELSE 2940
  297. 2970 *OP1
  298. 2980 MOUSE 1,,,0:CLS
  299. 2990 LINE(110,132)-(549,370),PSET,%8,BF
  300. 3000 LINE(100,120)-(539,359),PSET,%7,BF
  301. 3010 LINE(100,120)-(539,359),PSET,%15,B
  302. 3020 SYMBOL(240,135),"コントロールパネル",1,1,%15,,,6
  303. 3030 COLOR 1:LOCATE 60,17:PRINT"確定":LINE(480,322)-(512,341),PSET,6,BF:LINE(479,321)-(513,342),PSET,0,B
  304. 3040 LINE (160,321)-(231,339),PSET,6,BF:LINE(160,321)-(231,339),PSET,0,B
  305. 3050 LINE (320,321)-(408,339),PSET,6,BF:LINE(320,321)-(408,339),PSET,0,B
  306. 3060 COLOR 7
  307. 3070 LINE(239,306)-(255,323),PSET,7,BF:LINE(415,322)-(431,339),PSET,7,BF
  308. 3080 LINE(239,325)-(255,342),PSET,7,BF:LINE(433,339)-(448,322),PSET,7,BF
  309. 3090 MC=1:MB=0:MOUSE 4,100,100,549,370
  310. 3100 COLOR 1:LOCATE 20, 17:PRINT USING"ページ ##";MC+1:COLOR 0:LOCATE 30,16:PRINT"-"
  311. 3110 LOCATE 30,17:PRINT"+":COLOR 1:LOCATE 40,17:PRINT USING"パターン ##";MB+1:COLOR 0:LOCATE 52,17:PRINT"-+":LINE(136,154)-(510,305),PSET,%7,BF
  312. 3120 FOR I=0 TO MC:FOR J=0 TO MB
  313. 3130 LINE(J*24+128+8,I*18+154)-(J*24+150,I*18+170),PSET,7,BF
  314. 3140 LINE(J*24+128+8,I*18+154)-(J*24+150,I*18+170),PSET,0,B
  315. 3150 NEXT J,I:COLOR 6
  316. 3160 MOUSE 1,,,1
  317. 3170 MX=MOUSE(0)\8:MY=MOUSE(1)\20
  318. 3180 IF MOUSE(2,0) THEN 3200
  319. 3190 GOTO 3170
  320. 3200 IF MY=16 AND MX>=60 AND MX<=63 THEN 3260
  321. 3210 IF MY=15 AND (MX=30  OR  MX=31) AND MC>1 THEN MC=MC-1:GOTO 3100
  322. 3220 IF MY=16 AND (MX=30  OR  MX=31) AND MC<7 THEN MC=MC+1:GOTO 3100
  323. 3230 IF MY=16 AND (MX=52  OR  MX=53) AND MB>0  THEN MB=MB-1:GOTO 3100
  324. 3240 IF MY=16 AND (MX=54  OR  MX=55) AND MB<15 THEN MB=MB+1:GOTO 3100
  325. 3250 GOTO 3170
  326. 3260 CLS:RETURN
  327. 3270 *OP2
  328. 3280 MOUSE 1,,,0:CLS
  329. 3290 LINE(110,132)-(549,370),PSET,%8,BF
  330. 3300 LINE(100,120)-(539,359),PSET,%7,BF
  331. 3310 LINE(100,120)-(539,359),PSET,%15,B
  332. 3320 SYMBOL(240,135),"コントロールパネル",1,1,%15,,,6
  333. 3330 COLOR 1:LOCATE 60,17:PRINT"確定":LINE(480,322)-(512,341),PSET,6,BF:LINE(479,321)-(513,342),PSET,0,B
  334. 3340 LINE(251,168)-(491,188),PSET,0,BF:LOCATE 29,9 :PRINT"少|||||||||||||||||||||||||||||||多"
  335. 3350 LINE(251,207)-(491,226),PSET,0,BF:LOCATE 29,11:PRINT"速|||||||||||||||||||||||||||||||遅"
  336. 3360 COLOR 1:LOCATE 14,13:PRINT"実行方向"
  337. 3370 LINE(251,245)-(295,264),PSET,0,BF:LOCATE 32,13:PRINT"ノーマル "
  338. 3380 LINE(307,245)-(351,264),PSET,0,BF:LOCATE 39,13:PRINT"リバース"
  339. 3390 LINE(363,245)-(407,264),PSET,0,BF:LOCATE 46,13:PRINT"リターン "
  340. 3400 COLOR 7
  341. 3410 PT=9:WT=14:AT=0:GP=0
  342. 3420 LINE(253+PT*8,171)-(258+PT*8,185),PSET,5,BF
  343. 3430 LINE(253+WT*8,209)-(258+WT*8,224),PSET,5,BF
  344. 3440 LINE(252+GP*56,246)-(294+GP*56,263),PSET,5,BF
  345. 3450 COLOR 1:LOCATE 14,9:PRINT USING"中間画像数  ##";PT+1
  346. 3460 LOCATE 14,11:PRINT USING"実行ウエイト##";WT:COLOR 7
  347. 3470 MOUSE 1,,,1:MOUSE 4,100,100,549,370
  348. 3480 MX=MOUSE(0):MY=MOUSE(1)\20
  349. 3490 IF MOUSE(2,0) THEN 3510
  350. 3500 GOTO 3480
  351. 3510 IF MY=16 AND MX\8>=60 AND MX\8<=63 THEN 3550
  352. 3520 IF MY=8  AND MX>251 AND MX<491 THEN MOUSE 1,,,0:LINE(252+PT*8,171)-(258+PT*8,185),PSET,0,BF:PT=(MX-252)\8:GOTO 3420
  353. 3530 IF MY=10 AND MX>251 AND MX<491 THEN MOUSE 1,,,0:LINE(252+WT*8,209)-(258+WT*8,224),PSET,0,BF:WT=(MX-252)\8:GOTO 3420
  354. 3540 IF MY=12 AND MX>251 AND MX<407 THEN MOUSE 1,,,0:LINE(252+GP*56,246)-(294+GP*56,263),PSET,0,BF:GP=(MX-262)\56:GOTO 3420 ELSE GOTO 3480
  355. 3550 MOUSE 1,,,0:CLS:PT=PT+1:RETURN
  356. 3560 'レイアウト(?)
  357. 3570 *LO
  358. 3580 P$="パターン確定パターン▲▼ページ▲▼メニュー":LINE(0,0)-(639,19),PSET,0,BF
  359. 3590 FOR I=0 TO 4:COLOR ,%VAL(MID$("6543",I+1,1))
  360. 3600 SYMBOL(I*80,0),MID$(P$,I*9+1,9),1,1,VAL(MID$("6543",I+1,1)),,,23
  361. 3610 NEXT I:COLOR ,0:RETURN
  362. 3620 'ERROR処理
  363. 3630 E=ERR:CLOSE
  364. 3640 RESUME 3650
  365. 3650 ON ERROR GOTO 0
  366. 3660 IF E=72 THEN PRINT"指定されたドライブにディスクが入っていません!!":GOTO 3760
  367. 3670 IF E=60 THEN PRINT"指定されたドライブは存在しません!!":GOTO 3760
  368. 3680 IF E=73 THEN PRINT"ディスクが書き込み禁止です。":GOTO 3760
  369. 3690 IF E=64 THEN PRINT"指定のファイルはすでに存在しています。":GOTO 3720
  370. 3700 PRINT"エラーが発生しました。(ERR=";E;")":GOTO 3760
  371. 3710 '
  372. 3720 PRINT"上書きしますか?(Y/N)"
  373. 3730 I$=INPUT$(1)
  374. 3740 IF I$="Y" OR I$="y" THEN KILL D$+":"+F$+".ANM":GOTO 1540
  375. 3750 IF I$="N" OR I$="n" THEN 1340 ELSE 3730
  376. 3760 PRINT"再実行→RETURN Key/やめる→ESC Key"
  377. 3770 I$=INPUT$(1)
  378. 3780 IF I$=CHR$(13) THEN 1540
  379. 3790 IF I$=CHR$(27) THEN 1340 ELSE 3770
  380. 3800 '
  381. 3810 E=ERR:CLOSE
  382. 3820 RESUME 3830
  383. 3830 ON ERROR GOTO 0
  384. 3840 IF E=63 THEN PRINT"指定のファイルが見つかりません!!":GOTO 3890
  385. 3850 IF E=72 THEN PRINT"指定されたドライブにディスクが入っていません!!":GOTO 3890
  386. 3860 IF E=60 THEN PRINT"指定されたドライブは存在しません!!":GOTO 3890
  387. 3870 PRINT"エラーが発生しました。(ERR=";E;")"
  388. 3880 '
  389. 3890 PRINT"再実行→RETURN Key/やめる→ESC Key"
  390. 3900 I$=INPUT$(1)
  391. 3910 IF I$=CHR$(13) THEN 2590
  392. 3920 IF I$=CHR$(27) THEN 2380 ELSE 3910
  393.